using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using MakeIT.Framework.Util;
using MakeIT.MakeIT.Laundy.Agromotor.Site.Entidades;
using MakeIT.MakeIT.Laundy.Agromotor.Site.Negocios;

namespace MakeIT.MakeIT.Laundy.Agromotor.Site.Apresentacao
{
	public partial class CadastroBannerlateral : System.Web.UI.Page
	{

		UsuarioVO usuarioVO = null;

		protected void Page_Load(object sender, EventArgs e)
		{
			usuarioVO = (UsuarioVO)this.Session["userActive"];

			if (!IsPostBack)
			{
				Util.HabilitarCampos(false, this.panelCad);
				this.afuCadBannerUpload.Enabled = false;
			}

		}

		/// <summary>
		/// Manipula o evento do botão btnSalvar
		/// </summary>
		/// <param name="sender">Objeto disparador do evento</param>
		/// <param name="e">Argumento do evento</param>
		protected void btnSalvar_Click(object sender, EventArgs e)
		{

			//Declara objetos
			BannerlateralVO bannerlateralVO = null;
			bool novoRegistro = false;

			try
			{
				//Verifica se o ID é nulo, se sim = cadastro novo
				if (string.IsNullOrEmpty(this.txtCadIdBannerLateral.Text))
				{
					bannerlateralVO = BannerlateralVO.CreateVO();
					bannerlateralVO.cadastro = DateTime.Now;
					bannerlateralVO.cadastradoPor = usuarioVO.user;

					novoRegistro = true;

				}
				//Recupera dados para serem alterados
				else
				{
					//Recupera dados
					bannerlateralVO = AgromotorsiteDAO.getBannerlateral(Int32.Parse(this.txtCadIdBannerLateral.Text));
				}

				bannerlateralVO.ordem = Int32.Parse(this.txtCadOrdem.Text);
                bannerlateralVO.URL = this.txtCadURL.Text;
				bannerlateralVO.ativo = this.ddlCadAtivo.SelectedValue.Equals("S");
				bannerlateralVO.edicao = DateTime.Now;
				bannerlateralVO.editadoPor = usuarioVO.user;

				//Chama metodo para salvar ou criar novo registro
				if (novoRegistro)
					bannerlateralVO.idBannerLateral = (int)AgromotorsiteDAO.newBannerlateral(bannerlateralVO);
				else
					AgromotorsiteDAO.setBannerlateral(bannerlateralVO);

				// Exibe msg de sucesso ao salvar registro
				Util.ExibeAlert(this, "Registro salvo com sucesso!");

				//Popula grid atualizado
				this.btnPesquisa_Click(null, null);

				//Atualiza formulario, apos salvar os dados
				this.txtCadIdBannerLateral.Text = bannerlateralVO.idBannerLateral.ToString();
				this.ltCadBannerNome.Text = bannerlateralVO.bannerNome;
				this.ltCadBannerMime.Text = bannerlateralVO.bannerMime;
				this.ltCadastradoPor.Text = bannerlateralVO.cadastradoPor;
				this.ltEditadoPor.Text = bannerlateralVO.editadoPor;
				this.ltDataCadastro.Text = bannerlateralVO.cadastro.ToString("dd/MM/yyyy");
				this.ltDataEdicao.Text = bannerlateralVO.edicao.ToString("dd/MM/yyyy");

				//Habilita botoes da imagem banner
				this.btCadBannerRemover.Enabled = true;
				this.afuCadBannerUpload.Enabled = true;
				this.btCadBannerVisualizar.Enabled = true;
			}
			catch (Exception ex)
			{

				throw ex;
			}
		}

		/// <summary>
		/// Manipula o evento do botão btnPesquisa
		/// </summary>
		/// <param name="sender">Objeto disparador do evento</param>
		/// <param name="e">Argumento do evento</param>
		protected void btnPesquisa_Click(object sender, EventArgs e)
		{

			//Declara objetos
			int? idBannerLateral = null;
			bool? ativo = null;

			try
			{

				if (!string.IsNullOrEmpty(this.txtIdBannerLateral.Text))
				{
					idBannerLateral = Int32.Parse(this.txtIdBannerLateral.Text);
				}

				if(!this.ddlAtivo.SelectedValue.Equals(" "))
				{
					ativo = this.ddlAtivo.SelectedValue.Equals("S");
				}


				//Recupera a lista de registros segundo a pesquisa
				this.grvResultado.DataSource = AgromotorsiteDAO.getBannerlaterals(idBannerLateral, ativo);

				//Vincula os dados
				this.grvResultado.DataBind();
			}
			catch (Exception ex)
			{

				throw ex;
			}
		}

		/// <summary>
		/// Manipula o evento do botão btnCancelar
		/// </summary>
		/// <param name="sender">Objeto disparador do evento</param>
		/// <param name="e">Argumento do evento</param>
		protected void btnCancelar_Click(object sender, EventArgs e)
		{
			//Volta para a tab page de pesquisa
			//this.tabBannerlateral.ActiveTabIndex = 0;

			// Desabilita os campos para edição
			Util.HabilitarCampos(false, this.panelCad);

			// Destrava botão de edição
			this.btnEditar.Enabled = (!string.IsNullOrEmpty(this.txtCadIdBannerLateral.Text));

			// Destrava botão de exclusao
			this.btnExcluir.Enabled = (!string.IsNullOrEmpty(this.txtCadIdBannerLateral.Text));

			// Detrava botão de novo
			this.btnNovo.Enabled = true;

			// Desabilita o botão salvar
			this.btnSalvar.Enabled = false;

			// Desabilita botões da imagem banner
			this.btCadBannerRemover.Enabled = false;
			this.afuCadBannerUpload.Enabled = false;
			this.btCadBannerVisualizar.Enabled = (!string.IsNullOrEmpty(this.ltCadBannerNome.Text));

		}

		protected void imgbVisualizar_Click(object sender, ImageClickEventArgs e)
		{
			// Declara objetos
			BannerlateralVO bannerlateralVO = null;
			int idBannerLateral = 0;

			try
			{
				//Recupera os argumentos com o ID do objeto
				string[] argumentos = ((ImageButton)sender).CommandArgument.Split(';');
				idBannerLateral = Int32.Parse(argumentos[0]);

				//Recupera o objeto
				bannerlateralVO = AgromotorsiteDAO.getBannerlateral(idBannerLateral);

				this.txtCadIdBannerLateral.Text = bannerlateralVO.idBannerLateral.ToString();
				this.txtCadOrdem.Text = bannerlateralVO.ordem.ToString();
                this.txtCadURL.Text = bannerlateralVO.URL;
				this.ddlCadAtivo.SelectedValue = (bannerlateralVO.ativo==null?" ":(bannerlateralVO.ativo.Value?"S":"N"));
				this.ltCadBannerNome.Text = bannerlateralVO.bannerNome;
				this.ltCadBannerMime.Text = bannerlateralVO.bannerMime;
				this.ltCadastradoPor.Text = bannerlateralVO.cadastradoPor;
				this.ltEditadoPor.Text = bannerlateralVO.editadoPor;
				this.ltDataCadastro.Text = bannerlateralVO.cadastro.ToString("dd/MM/yyyy");
				this.ltDataEdicao.Text = bannerlateralVO.edicao.ToString("dd/MM/yyyy");

				//Habilita tab page do cadastro
				this.tabBannerlateral.ActiveTabIndex = 1;

				//Desabilita campos para edição
				Util.HabilitarCampos(false, this.panelCad);

				//Desabilita botão salvar
				this.btnSalvar.Enabled = false;

				//Habilita botão editar
				this.btnEditar.Enabled = true;

				//Habilita botão excluir
				this.btnExcluir.Enabled = true;

				//Habilita botão novo
				this.btnNovo.Enabled = true;

				// Desabilita botões da imagem banner
				this.btCadBannerRemover.Enabled = false;
				this.afuCadBannerUpload.Enabled = false;
				this.btCadBannerVisualizar.Enabled = (!string.IsNullOrEmpty(this.ltCadBannerNome.Text));

			}
			catch (Exception ex)
			{

				throw ex;
			}
		}

		// <summary>
		// Manipula o evento editar do web form
		// </summary>
		// <param name="sender">Objeto disparador de evento</param>
		// <param name="e">Argumento do evento</param>
		protected void btnEditar_Click(object sender, EventArgs e)
		{
			// Habilita os campos para edição
			Util.HabilitarCampos(true, this.panelCad);

			// Trava apenas os text box da PK
			this.txtCadIdBannerLateral.Enabled = false;

			// Trava botão de edição
			this.btnEditar.Enabled = false;

			// Trava botão de exclusao
			this.btnExcluir.Enabled = false;

			// Trava botão de novo
			this.btnNovo.Enabled = false;

			// Habilita o botão salvar
			this.btnSalvar.Enabled = true;

			// Habilita botões da imagem banner
			this.btCadBannerRemover.Enabled = true;
			this.afuCadBannerUpload.Enabled = true;
			this.btCadBannerVisualizar.Enabled = true;

		}

		protected void btnNovo_Click(object sender, EventArgs e)
		{
			//Limpa formulario, para a entrada de novo registro
			Util.LimparCampos(this.panelCad);
			// Habilita os campos para edição
			Util.HabilitarCampos(true, this.panelCad);

			this.ltCadBannerNome.Text = "";
			this.ltCadBannerMime.Text = "";
			this.ltCadastradoPor.Text = "";
			this.ltEditadoPor.Text = "";
			this.ltDataCadastro.Text = "";
			this.ltDataEdicao.Text = "";

			// Trava apenas os text box da PK
			this.txtCadIdBannerLateral.Enabled = false;

			// Trava botão de edição
			this.btnEditar.Enabled = false;

			// Trava botão de exclusao
			this.btnExcluir.Enabled = false;

			// Trava botão de novo
			this.btnNovo.Enabled = false;

			// Habilita o botão salvar
			this.btnSalvar.Enabled = true;

			// Desabilita botões da imagem banner
			this.btCadBannerRemover.Enabled = false;
			this.afuCadBannerUpload.Enabled = false;
			this.btCadBannerVisualizar.Enabled = false;

		}

		protected void btnExcluir_Click(object sender, EventArgs e)
		{
			//Declara objetos
			BannerlateralVO bannerlateralVO = null;

			try
			{
				//Cria objeto
				bannerlateralVO = BannerlateralVO.CreateVO();
				bannerlateralVO.idBannerLateral = Int32.Parse(this.txtCadIdBannerLateral.Text);

				//Chama metodo para excluir registro
				AgromotorsiteDAO.delBannerlateral(bannerlateralVO);

				// Exibe msg de sucesso ao salvar registro
				Util.ExibeAlert(this, "Registro excluido com sucesso!");

				//Popula grid atualizado
				this.btnPesquisa_Click(null, null);

				//Limpa formulario, apos salvar os dados
				Util.LimparCampos(this.panelCad);
				this.ltCadBannerNome.Text = "";
				this.ltCadBannerMime.Text = "";
				this.ltCadastradoPor.Text = "";
				this.ltEditadoPor.Text = "";
				this.ltDataCadastro.Text = "";
				this.ltDataEdicao.Text = "";

				// Trava botão de edição
				this.btnEditar.Enabled = false;

				// Trava botão de exclusao
				this.btnExcluir.Enabled = false;

				// Desabilita o botão salvar
				this.btnSalvar.Enabled = false;

				// Habilita o botao novo
				this.btnNovo.Enabled = true;

				// Desabilita botões da imagem banner
				this.btCadBannerRemover.Enabled = false;
				this.afuCadBannerUpload.Enabled = false;
				this.btCadBannerVisualizar.Enabled = false;

			}
			catch (Exception ex)
			{

				throw ex;
			}
			
		}
		#region Imagens
		protected void ibtPanelFotoClose_Click(object sender, EventArgs e)
		{
			this.PanelFoto.Visible = false;
		}

		#region Imagem Banner
		protected void btCadBannerVisualizar_Click(object sender, EventArgs e)
		{
			BannerlateralVO bannerlateralVO = AgromotorsiteDAO.getBannerlateral(Int32.Parse(this.txtCadIdBannerLateral.Text));
			this.ltCadBannerNome.Text = bannerlateralVO.bannerNome;
			this.ltCadBannerMime.Text = bannerlateralVO.bannerMime;

			this.imgPanelFoto.ImageUrl = "~/DownBannerlateralBanner.aspx?idBannerLateral=" + bannerlateralVO.idBannerLateral.ToString()+"&controll="+DateTime.Now.Ticks.ToString();
			this.lblPanelFoto.Text = this.ltCadBannerNome.Text + "( " + this.ltCadBannerMime.Text + " )";
			this.PanelFoto.Visible = true;
		}
		protected void ProcessafuCadBannerUpload(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
		{
			// upload da imagem
			if (afuCadBannerUpload.PostedFile.FileName.Length > 0)
			{
				BannerlateralVO bannerlateralVO = BannerlateralVO.CreateVO();
				bannerlateralVO.idBannerLateral = Int32.Parse(this.txtCadIdBannerLateral.Text);
				bannerlateralVO.bannerMime = afuCadBannerUpload.PostedFile.ContentType;
				bannerlateralVO.bannerNome = afuCadBannerUpload.PostedFile.FileName;

				System.IO.Stream st = afuCadBannerUpload.PostedFile.InputStream;
				byte[] fb = new byte[st.Length];

				fb = afuCadBannerUpload.GetBytesFromStream(st);

				bannerlateralVO.banner = fb;

				bannerlateralVO.edicao = DateTime.Now;
				bannerlateralVO.editadoPor = usuarioVO.user;
				AgromotorsiteDAO.setBannerlateralBanner(bannerlateralVO);

			}

		}
		protected void btCadBannerRemover_Click(object sender, EventArgs e)
		{
			BannerlateralVO bannerlateralVO = BannerlateralVO.CreateVO();
			bannerlateralVO.idBannerLateral = Int32.Parse(this.txtCadIdBannerLateral.Text);
			bannerlateralVO.banner = null;
			bannerlateralVO.bannerMime = null;
			bannerlateralVO.bannerNome = null;
			AgromotorsiteDAO.setBannerlateralBanner(bannerlateralVO);
			this.ltCadBannerMime.Text = "";
			this.ltCadBannerNome.Text = "";

			// Exibe msg de sucesso ao salvar registro
			Util.ExibeAlert(this, "Imagem removida!");
		}

		#endregion
		#endregion

	}
}
